O Objetivo de Desenvolvimento Sustentável 6 (ODS 6), definido pela Organização das Nações Unidas, busca assegurar a disponibilidade e a gestão sustentável da água potável e do saneamento para todos até 2030.Visto isso, este artigo avalia o progresso do município de Rondonópolis, Mato Grosso, em relação às metas estabelecidas pelo ODS 6, observando indicadores específicos disponivilisados pelo SNIS para identificar avanços e áreas que demandam maior atenção correspondentes a agua e esgoto pois metas que estão relacionadas exclusivamente a água e esgoto (saneamento) são:
Meta 6.1: Acesso universal e equitativo à água potável e segura até 2030. Está focada exclusivamente no fornecimento de água potável.
Meta 6.2: Acesso a saneamento e higiene adequados até 2030. Esta meta trata de saneamento, incluindo tanto o fornecimento de serviços de saneamento quanto as instalações para lavagem das mãos com água e sabão.
Essas duas metas abordam diretamente o tema de água potável e saneamento (esgoto). As outras metas (6.3, 6.4, 6.5, 6.6, 6.a e 6.b) também estão relacionadas à água, mas incluem aspectos mais amplos, como gestão de recursos hídricos, qualidade da água e ecossistemas relacionados à água.
O estudo visa verificar se o município de Rondonópolis está caminhando na direção das metas do ODS 6, com foco em:
6.1: Acesso universal e equitativo à água potável segura;
6.2: Acesso a saneamento e higiene adequados e equitativos, eliminando a
defecação a céu aberto;
6.3: Melhoria da qualidade da água e aumento da reciclagem e
reutilização; 6.4: Eficiência no uso da água e redução da escassez de
água; 6.5: Implementação da gestão integrada dos recursos hídricos; 6.6:
Proteção e restauração de ecossistemas aquáticos; 6.7: Ampliação da
cooperação internacional para apoio técnico e capacitação; 6.8:
Fortalecimento da participação comunitária na gestão da água e
saneamento.
Esta seção descreve as etapas de preparação e análise dos dados para avaliar o progresso de Rondonópolis em relação às metas do ODS 6. O processo metodológico inclui a instalação e carregamento de pacotes, carregamento dos dados e tratamento dos dados do SNIS para selecionar as variáveis de interesse.
Para realizar a análise, utilizamos uma série de pacotes no R, essenciais para manipulação, visualização e análise de dados geoespaciais e de séries temporais. Os pacotes usados incluem ggplot2 para visualizações, dplyr para manipulação de dados, plotly para gráficos interativos, entre outros.
Primeiramente, verificamos se os pacotes necessários estão instalados. Caso não estejam, são instalados automaticamente.
# Lista de pacotes necessários
pacotes <- c("ggplot2", "dplyr", "tidyr", "plotly", "readr", "zoo", "censobr", "geobr", "sf", "httr", "jsonlite")
# Instalar os pacotes que ainda não estão instalados
pacotes_nao_instalados <- pacotes[!(pacotes %in% installed.packages()[,"Package"])]
if(length(pacotes_nao_instalados)) install.packages(pacotes_nao_instalados)Após garantir que todos os pacotes estão instalados, eles são carregados no ambiente R.
invisible(lapply(pacotes, function(pkg) {
if (!require(pkg, character.only = TRUE)) {
stop(paste("Falha ao carregar o pacote:", pkg))
}
}))## Carregando pacotes exigidos: ggplot2
## Carregando pacotes exigidos: dplyr
##
## Anexando pacote: 'dplyr'
## Os seguintes objetos são mascarados por 'package:stats':
##
## filter, lag
## Os seguintes objetos são mascarados por 'package:base':
##
## intersect, setdiff, setequal, union
## Carregando pacotes exigidos: tidyr
## Carregando pacotes exigidos: plotly
##
## Anexando pacote: 'plotly'
## O seguinte objeto é mascarado por 'package:ggplot2':
##
## last_plot
## O seguinte objeto é mascarado por 'package:stats':
##
## filter
## O seguinte objeto é mascarado por 'package:graphics':
##
## layout
## Carregando pacotes exigidos: readr
## Carregando pacotes exigidos: zoo
##
## Anexando pacote: 'zoo'
## Os seguintes objetos são mascarados por 'package:base':
##
## as.Date, as.Date.numeric
## Carregando pacotes exigidos: censobr
## Carregando pacotes exigidos: geobr
## Carregando namespace exigido: sf
## Carregando pacotes exigidos: sf
## Linking to GEOS 3.12.1, GDAL 3.8.4, PROJ 9.3.1; sf_use_s2() is TRUE
## Carregando pacotes exigidos: httr
##
## Anexando pacote: 'httr'
## O seguinte objeto é mascarado por 'package:plotly':
##
## config
## Carregando pacotes exigidos: jsonlite
Esses pacotes garantem uma base sólida para o carregamento, manipulação e visualização dos dados que serão utilizados na análise.
Os dados utilizados neste estudo foram extraídos do Sistema Nacional de Informações sobre Saneamento (SNIS) e estão hospedados em um repositório do GitHub. Para assegurar a reprodutibilidade, o código carrega diretamente o arquivo CSV a partir da URL fornecida.
; e codificação ISO-8859-1, que permite a
leitura correta de caracteres em português.url <- "https://github.com/CamilyNunes/Produto_San_Bas_Roo/raw/refs/heads/main/Dados/SNIS%20-%20S%C3%A9rie%20Hist%C3%B3rica/Agregado-20240925161723-SNISMT.csv"
san_mt <- read_delim(url, delim = ";", locale = locale(encoding = "ISO-8859-1"))## Rows: 517 Columns: 229
## ── Column specification ────────────────────────────────────────────────────────
## Delimiter: ";"
## chr (95): Município, Estado, Prestador, Sigla do Prestador, Abrangência, Tip...
## dbl (66): Código do Município, Ano de Referência, Código do Prestador, G05A ...
## num (63): AG005 - Extensão da rede de água, AG005A - Extensão da rede de águ...
## lgl (5): GE025 - Quantidade de municípios não atendidos com abastecimento d...
##
## ℹ Use `spec()` to retrieve the full column specification for this data.
## ℹ Specify the column types or set `show_col_types = FALSE` to quiet this message.
Após o carregamento, realizamos o tratamento dos dados para selecionar as colunas de interesse e garantir que os indicadores relevantes para o estudo estejam bem organizados. Esse processo inclui a seleção das variáveis de saneamento e o filtro para a cidade de Rondonópolis.
Selecionar colunas de interesse:
san$Pop_total_atendida_abas_agua <- san_mt$`AG001 - População total atendida com abastecimento de água`
san$Pop_urbana_atendida_abas_agua <- san_mt$`AG026 - População urbana atendida com abastecimento de água`
san$Pop_rural_atendida_abas_agua <- san_mt$`AG025A - População rural atendida com abastecimento de água no ano anterior ao de referência.`
san$Consumo_agua_percapita <- san_mt$`IN022 - Consumo médio percapita de água`
san$Atendimento_total_percentual <- san_mt$`IN055 - Índice de atendimento total de água`#6.2(a)
san$Pop_total_atendida_esgotamento_sanitario <- san_mt$`ES001 - População total atendida com esgotamento sanitário`
san$Pop_urbana_atendida_esgotamento_sanitario <- san_mt$`ES026 - População urbana atendida com esgotamento sanitário`
san$Qtd_ligacoes_ativas <-san_mt$`ES002 - Quantidade de ligações ativas de esgotos`
#6.2(b)
san$Pop_urbana_residente_esgotamento_sanitario <- san_mt$`G06B - População urbana residente do(s) município(s) com esgotamento sanitário`
san$Indice_tratamento_esgoto_percentual <- san_mt$`IN016 - Índice de tratamento de esgoto`
#outros
san$Indice_coleta_esgoto <- san_mt$`IN015 - Índice de coleta de esgoto`
san$Volume_esgoto_coletado_m3 <- san_mt$`ES005 - Volume de esgotos coletado`
san$Volume_esgoto_tratado <- san_mt$`ES006 - Volume de esgotos tratado`Diferença entre as variaveis com a descrição de ‘atendida’ e ‘com (abastecimento)’:
Atendida (acesso a água potável segura): Implica não apenas a presença de um sistema de abastecimento, mas também a garantia de que a água é potável, segura e gerida adequadamente.
Com abastecimento de água: Refere-se ao simples fornecimento de água, sem garantir que ela seja tratada ou que atenda aos padrões de segurança e qualidade para consumo humano.
A seguir, filtramos os dados para o município de Rondonópolis, que é o foco deste estudo.
Para facilitar a interpretação, renomeamos algumas colunas, garantindo a consistência no conjunto de dados.
# Supondo que a coluna em uma das tabelas esteja com um nome diferente, renomeie para padronizar
san_roo <- san_roo %>%
rename(`Ano` = `Ano de Referência`)Esse tratamento garante que os dados estejam prontos para análise, permitindo explorar os indicadores de forma estruturada e analisar o progresso do município em relação às metas do ODS 6.
Nesta seção, exploramos os dados de saneamento básico e consumo de água para o município de Rondonópolis, com o objetivo de avaliar seu progresso em relação às metas do ODS 6. A análise inclui a visualização da qualidade e completude dos dados, o cálculo de indicadores fundamentais e a criação de gráficos interativos que facilitam a interpretação e exploração dos dados ao longo do tempo.
Para garantir a consistência e confiabilidade da análise, é importante identificar e visualizar a proporção de valores ausentes em cada variável do conjunto de dados. Isso permite uma melhor compreensão de possíveis lacunas de dados que possam afetar os resultados.
Abaixo, geramos um gráfico de barra empilhada que mostra a proporção de valores presentes e ausentes para cada atributo relevante. Esse gráfico indica quais variáveis precisam de atenção adicional em termos de completude de dados.
# 1. Criar uma função que calcula a proporção de valores omissos (NA) por coluna
calc_missing_proportion <- function(df) {
missing_data <- sapply(df, function(col) {
mean(is.na(col))
})
missing_df <- data.frame(
Atributo = names(missing_data),
ProporcaoOmissos = missing_data)
missing_df <- missing_df %>%
filter(ProporcaoOmissos > 0)
return(missing_df)
}
# 2. Calcular a proporção de valores omissos no conjunto de dados
missing_proportions <- calc_missing_proportion(san_roo)
# 3. Preparar os dados para a plotagem em forma de gráfico de barra empilhada
plot_data <- missing_proportions %>%
mutate(Presentes = 1 - ProporcaoOmissos) %>%
pivot_longer(cols = c(ProporcaoOmissos, Presentes),
names_to = "Valores",
values_to = "Proporcao")
# 4. Definir as cores de acordo com seu Tema dos Gráficos
cor_omisso <- "#FF6347"
cor_presente <- "#006400"
# 5. Criar o gráfico de coluna empilhada em 100% e inverter os eixos
gg <- ggplot(plot_data, aes(x = Proporcao,
y = Atributo,
fill = Valores )) +
geom_bar(stat = "identity", position = "fill") +
scale_x_continuous(labels = scales::percent) +
labs(
title = "Proporção de Valores Omissos por Atributo",
x = "Proporção (%)",
y = "Atributos") +
scale_fill_manual(values = c("ProporcaoOmissos" = cor_omisso, "Presentes" = cor_presente),
labels = c("Valores Presentes", "Valores Omissos")) +
theme_minimal() +
theme(
axis.title.x = element_text(size = 14, face = "bold", color = "black"),
axis.title.y = element_text(size = 14, face = "bold", color = "black", angle = 90),
plot.title = element_text(size = 16, face = "bold", hjust = 0.5),
plot.subtitle = element_text(size = 12, hjust = 0.5),
panel.grid.major = element_line(color = "grey85"),
panel.grid.minor = element_blank())
# Salvar o gráfico em um arquivo PNG
ggsave(
filename = 'grafico_proporcao_omissos.png',
plot = gg,
path = 'resultados',
width = 8,
height = 4,
units = 'in')
# 6. Converter o gráfico ggplot em um gráfico interativo com plotly
interactive_plot <- ggplotly(gg)
# 7. Mostrar o gráfico interativo
interactive_plotO gráfico acima permite identificar rapidamente as variáveis com valores ausentes. As variáveis com maiores proporções de omissão indicam potenciais lacunas nos dados do SNIS, que devem ser consideradas nas interpretações dos resultados.
Para lidar com os valores ausentes, adotamos a remoção das linhas com 60% ou mais de dados faltantes, pois as informações disponíveis nesses casos eram insuficientes para análise confiável. Essa abordagem evita vieses decorrentes de imputações em variáveis com grandes proporções de omissão.
# 1. Extração da Variável de Interesse
# A variável 'datavar' contém o consumo per capita de água em litros por habitante por dia.
datavar <- san_roo$Consumo_agua_percapita
# 2. Armazenamento do Dataset Completo
# A variável 'data' recebe o dataset 'san' completo.
# Isso permite o uso de todos os dados na análise subsequente.
data <- san_roo
# 3. Definição da Legenda para Gráficos
# Define a legenda para as visualizações que utilizam a variável 'datavar'.
# A legenda indica que a variável representa o "Consumo Percapita de Água" em litros por habitante por dia.
legendavar <- 'Consumo Percapita de Água (l/hab/dia)'
# Definição de chave para a média
chave <- 'media'# Função para limpar strings, removendo espaços, caracteres especiais e acentos
cleanStr <- function(string) {
# Carregar pacotes necessários apenas uma vez
if (!require(stringi)) install.packages("stringi", quietly = TRUE)
if (!require(stringr)) install.packages("stringr", quietly = TRUE)
# Limpar e normalizar a string
string <- str_replace_all(string, ' ', '_')
string <- str_replace_all(string, '-', '_')
string <- str_replace_all(string, '%', '')
string <- str_replace_all(string, '/', '_')
string <- stri_trans_general(string, "latin-ascii")
string <- tolower(string)
return(string)
}tema_plot <- function(dataTime, legendavar, chave) {
# Criar gráfico básico de linha com o tema minimalista
plot <- ggplot(data = dataTime, aes(x = tempo, y = x, group = 1)) +
geom_line(color = "#006400", size = 1.2) + # Linha na cor verde-escura
geom_label(aes(label = label), size = 3, color = "#006400", nudge_y = 0.5) + # Rótulos em verde-escuro
labs(
title = "Evolução Temporal de Rondonópolis (MT)",
subtitle = legendavar,
x = "Ano", # Legenda para o eixo X
y = legendavar # Legenda para o eixo Y
) +
scale_x_continuous(
breaks = seq(from = min(dataTime$tempo), to = max(dataTime$tempo), by = 1),
limits = c(min(dataTime$tempo), max(dataTime$tempo)),
expand = c(0, 0) # Remover margens extras
) +
scale_color_distiller(palette = "Greens", direction = 1) + # Paleta de cores Greens
theme_minimal() %+replace% # Manter um tema minimalista com os eixos
theme(
axis.title.x = element_text(size = 10, face = "bold", color = "black"), # Legenda do eixo X
axis.title.y = element_text(size = 10, face = "bold", color = "black", angle = 90), # Legenda Y na vertical
axis.text.x = element_text(size = 10, angle = 45, hjust = 1), # Texto do eixo X com rotação
axis.text.y = element_text(size = 10), # Texto do eixo Y
plot.title = element_text(size = 14, face = "bold", hjust = 0.5), # Título centralizado
plot.subtitle = element_text(size = 12, hjust = 0.5), # Subtítulo centralizado
panel.grid.major.x = element_blank(), # Remover linhas de grid principais do eixo X
panel.grid.major.y = element_line(color = "grey85"), # Linhas de grid principais do eixo Y
panel.grid.minor = element_blank(), # Remover grid secundário
legend.position = "none" # Sem legenda adicional
)
# Agregar escala Y caso solicitado
if (chave == 'agregar') {
plot <- plot + scale_y_continuous(limits = range(dataTime$x, na.rm = TRUE))
}
# Salvar o gráfico em um arquivo PNG
ggsave(
filename = paste0('grafico_', cleanStr(legendavar), '.png'),
plot = plot,
path = 'resultados',
width = 8,
height = 4,
units = 'in')
# Converta o gráfico ggplot em um gráfico interativo
plot_interativo <- ggplotly(plot)
return(plot_interativo)
}dev01 <- function(data, datavar, chave, legendavar) {
if (chave == 'agregar') {
# agregar valores
dataTime = aggregate(datavar, by = list(tempo = as.numeric(data$`Ano`)), FUN = sum)
} else if (chave == 'media') {
# tirar media valores
dataTime = aggregate(datavar, by = list(tempo = as.numeric(data$`Ano`)), FUN = mean)
dataTime$x = round(dataTime$x, 2)
} else {
stop("Chave não encontrada! Tente 'agregar' ou 'media'.")
}
# label
dataTime$label <- NA
n <- min(5, nrow(dataTime)) #Seleciona no máximo 5 pontos
idx <- seq(1, nrow(dataTime), length.out = n)
dataTime$label[idx] <- dataTime$x[idx]
# A coluna 'x' precisa ser definida aqui
colnames(dataTime)[2] <- "x" # Renomeia a coluna para 'x'
# gráfico
plot = tema_plot(dataTime, legendavar, chave)
return(plot)
}Garantir disponibilidade e manejo sustentável da água e saneamento para todos
Até 2030, alcançar o acesso universal e equitativo a água potável e segura para todos.
Em relação ao múnicipio de Rondonópolis é possível acompanhar a seríe hístorica de abastecimento de água durante o periodo de 2000 a 2022, como é apresentado no gráfico a seguir, apresentando um aumento de habitantes de rondonópolis com abastecimento de água, saindo de 145.600 habitantes em 2000 a 244.911 em 2022.
dev01(san_roo, san_roo$Pop_total_atendida_abas_agua, 'media','Pop. total com Abastecimento de Água')## Warning: Using `size` aesthetic for lines was deprecated in ggplot2 3.4.0.
## ℹ Please use `linewidth` instead.
## This warning is displayed once every 8 hours.
## Call `lifecycle::last_lifecycle_warnings()` to see where this warning was
## generated.
## Carregando pacotes exigidos: stringi
## Carregando pacotes exigidos: stringr
## Warning: Removed 19 rows containing missing values or values outside the scale range
## (`geom_label()`).
## Warning in geom2trace.default(dots[[1L]][[1L]], dots[[2L]][[1L]], dots[[3L]][[1L]]): geom_GeomLabel() has yet to be implemented in plotly.
## If you'd like to see this geom implemented,
## Please open an issue with your example code at
## https://github.com/ropensci/plotly/issues
## Warning: Removed 19 rows containing missing values or values outside the scale range
## (`geom_label()`).
## geom_GeomLabel() has yet to be implemented in plotly.
## If you'd like to see this geom implemented,
## Please open an issue with your example code at
## https://github.com/ropensci/plotly/issues
Na seção, estamos realizando uma análise para calcular a proporção da população de Rondonópolis que tem acesso a água potável gerida de forma segura, utilizando dados do município e da população. O objetivo é verificar o percentual da população atendida por serviços de água potável que são gerenciados de maneira segura ao longo dos anos.
O Indicador 6.1.1 mensura a proporção da população que utiliza serviços de água potável gerenciados de forma segura. A definição de “seguro” para o abastecimento de água envolve:
Fonte aprimorada de água: Isso inclui redes gerais de distribuição de água, poços artesianos, poços rasos protegidos, nascentes protegidas e até mesmo água de chuva armazenada.
Localização da água: A água deve estar disponível no domicílio ou na propriedade do residente.
Disponibilidade e segurança: A água deve ser disponível conforme a necessidade da população e livre de contaminação fecal ou química.
A seguir, detalhamos as etapas envolvidas nesse processo.
O primeiro passo é filtrar os dados para o intervalo de anos de interesse (2001 a 2021) e selecionar as colunas relevantes, como o ano e a quantidade de população atendida por serviços de água potável. A coluna de população atendida pode conter caracteres especiais, como vírgulas ou pontos, que são removidos para garantir que a variável seja numérica. Este é o código utilizado:
# Filtrar os dados para o intervalo de anos e selecionar as colunas desejadas
san_meta <- san_roo %>%
dplyr::filter(`Ano` >= 2001 & `Ano` <= 2021) %>%
dplyr::select(
`Ano`,
`Pop_total_atendida_abas_agua`,
`Pop_urbana_atendida_abas_agua`,
`Pop_rural_atendida_abas_agua`) %>%
dplyr::mutate(
Pop_total_atendida_abas_agua = as.numeric(gsub("[.,]", "", Pop_total_atendida_abas_agua)),
Pop_urbana_atendida_abas_agua = as.numeric(gsub("[.,]", "", Pop_urbana_atendida_abas_agua)),
Pop_rural_atendida_abas_agua = as.numeric(gsub("[.,]", "", Pop_rural_atendida_abas_agua))) Para calcular a proporção, também precisamos dos dados de população total de Rondonópolis, que são extraídos da API SIDRA do IBGE. O código utiliza o código da tabela 6579, que fornece estimativas anuais de população:
A resposta da API do SIDRA contém várias colunas, mas estamos interessados apenas nas colunas de ano e população total. As colunas são extraídas e convertidas para o formato numérico:
# Selecionar colunas relevantes, incluindo o código do município
pop_total <- populacao_rondonopolis %>%
select(Ano = D1N, Populacao = V) %>%
mutate(Ano = as.numeric(Ano),
Populacao = as.numeric(Populacao))## Warning: There were 2 warnings in `mutate()`.
## The first warning was:
## ℹ In argument: `Ano = as.numeric(Ano)`.
## Caused by warning:
## ! NAs introduzidos por coerção
## ℹ Run `dplyr::last_dplyr_warnings()` to see the 1 remaining warning.
Com os dados de população de Rondonópolis e os dados de atendimento por água potável já preparados, unimos as duas fontes de informação com base no ano. Em seguida, calculamos a proporção da população atendida por serviços de água potável, dividindo o número de pessoas atendidas pela população total de cada ano e multiplicando por 100 para obter o percentual:
# Criar novas colunas com a divisão das variáveis de população atendida por abastecimento de água pela população total
meta61 <- san_bas %>%
mutate(
Pop_total_atendida_pct = (Pop_total_atendida_abas_agua / Populacao) * 100,
Pop_urbana_atendida_pct = (Pop_urbana_atendida_abas_agua / Populacao) * 100,
Pop_rural_atendida_pct = (Pop_rural_atendida_abas_agua / Populacao) * 100)# gráfico de barras
grafico_barras <- meta61 %>%
ggplot(aes(x = Ano)) +
# População total atendida
geom_bar(aes(y = Pop_total_atendida_pct, fill = "Total", text = paste0(round(Pop_total_atendida_pct, 2), "%")),
stat = "identity", position = "dodge", width = 0.8) +
# População urbana atendida
geom_bar(aes(y = Pop_urbana_atendida_pct, fill = "Urbana", text = paste0(round(Pop_urbana_atendida_pct, 2), "%")),
stat = "identity", position = "dodge", width = 0.8) +
# População rural atendida
geom_bar(aes(y = Pop_rural_atendida_pct, fill = "Rural", text = paste0(round(Pop_rural_atendida_pct, 2), "%")),
stat = "identity", position = "dodge", width = 0.8) +
scale_fill_manual(values = c("Total" = "#FF9999", "Urbana" = "#66B3FF", "Rural" = "#99FF99")) + # Definindo cores diferentes
labs(
title = "População Atendida por Abastecimento de Água",
x = "Ano",
y = "Porcentagem (%)",
fill = "Tipo de População"
) +
theme_minimal() +
theme(
legend.position = "top",
plot.title = element_text(size = 16, face = "bold"),
axis.title = element_text(size = 12),
axis.text = element_text(size = 10),
plot.margin = margin(1, 1, 1, 1, "cm")
)## Warning in geom_bar(aes(y = Pop_total_atendida_pct, fill = "Total", text =
## paste0(round(Pop_total_atendida_pct, : Ignoring unknown aesthetics: text
## Warning in geom_bar(aes(y = Pop_urbana_atendida_pct, fill = "Urbana", text =
## paste0(round(Pop_urbana_atendida_pct, : Ignoring unknown aesthetics: text
## Warning in geom_bar(aes(y = Pop_rural_atendida_pct, fill = "Rural", text =
## paste0(round(Pop_rural_atendida_pct, : Ignoring unknown aesthetics: text
# Tornar o gráfico interativo
grafico_interativo <- ggplotly(grafico_barras, tooltip = "text")
# Exibir o gráfico interativo
grafico_interativo# Salvar o gráfico como JPG na pasta "resultados"
ggsave(
filename = "resultados/grafico_pop_atendida.jpg",
plot = grafico_barras,
width = 10,
height = 6,
units = "in",
dpi = 300
)## Warning: Removed 12 rows containing missing values or values outside the scale range
## (`geom_bar()`).
O resultado final dessa análise será uma nova coluna chamada perc_pop_atendida, que representa a porcentagem da população atendida por água potável gerida de forma segura para cada ano entre 2001 e 2021. Com isso, conseguimos observar como essa proporção variou ao longo do tempo e avaliar o progresso da cidade em relação à meta 6.1 da ODS 6, que busca garantir acesso universal e equitativo à água potável até 2030.
Essa análise é importante porque nos permite verificar não apenas o número de pessoas atendidas, mas também a evolução dessa cobertura ao longo dos anos, fornecendo uma visão crítica sobre os avanços ou lacunas na implementação de políticas públicas de saneamento.
A Meta 6.2 da ODS 6 visa alcançar, até 2030, o acesso universal e equitativo a saneamento e higiene adequados para todos, com especial atenção para as necessidades de mulheres, meninas e indivíduos em situação de vulnerabilidade. Esta meta também busca erradicar a prática da defecação a céu aberto. Os indicadores para essa meta incluem:
6.2(a): Proporção da população que utiliza serviços de saneamento geridos de forma segura. 6.2(b): Proporção da população com acesso a instalações de lavagem de mãos com água e sabão.
Para calcular a proporção da população que utiliza serviços de saneamento geridos de forma segura, considera-se a população atendida com esgoto tratado como indicador de saneamento seguro.
No caso do Sistema Nacional de Informações sobre Saneamento (SNIS), as variáveis relevantes para esse cálculo incluem:
ES001: População total atendida com esgotamento sanitário: : Esta variável informa a quantidade de população que é atendida com serviços de esgoto, seja com coleta ou tratamento de esgoto.
ES026 - População urbana atendida com esgotamento sanitário: Se você deseja analisar especificamente a população urbana, esta variável é mais indicada.
ES002 - Quantidade de ligações ativas de esgotos: Embora não forneça diretamente a população atendida, ela pode ser útil para entender a infraestrutura de saneamento, que é um fator importante para o atendimento com esgoto.
A fórmula para calcular a proporção de população com acesso a esgoto tratado é:
No código abaixo, são realizadas as operações para calcular essa proporção:
# Filtrar os dados para o intervalo de anos e selecionar as colunas desejadas
san_meta62a <- san_roo %>%
dplyr::filter(`Ano` >= 2001 & `Ano` <= 2021) %>%
dplyr::select(
`Ano`,
`Pop_total_atendida_esgotamento_sanitario`,
`Pop_urbana_atendida_esgotamento_sanitario`,
`Qtd_ligacoes_ativas`) %>%
dplyr::mutate(
Pop_total_atendida_esgotamento_sanitario = as.numeric(gsub("[.,]", "", Pop_total_atendida_esgotamento_sanitario)),
Pop_urbana_atendida_esgotamento_sanitario = as.numeric(gsub("[.,]", "", Pop_urbana_atendida_esgotamento_sanitario)),
Qtd_ligacoes_ativas = as.numeric(gsub("[.,]", "", Qtd_ligacoes_ativas)))# Criar novas colunas com a divisão das variáveis de população atendida por abastecimento de água pela população total
san_meta621a <- san_meta62a %>%
mutate(
Pop_total_atendida_esgotamento_sanitario_pct = (Pop_total_atendida_esgotamento_sanitario / Populacao) * 100,
Pop_urbana_atendida_esgotamento_sanitario_pct = (Pop_urbana_atendida_esgotamento_sanitario / Populacao) * 100)grafico_barras <- san_meta621a %>%
ggplot(aes(x = Ano)) +
# Barra para a população total atendida por esgoto sanitário
geom_bar(aes(y = Pop_total_atendida_esgotamento_sanitario_pct, fill = "Total",
text = paste0(round(Pop_total_atendida_esgotamento_sanitario_pct, 2), "%")),
stat = "identity", position = "dodge") +
# Barra para a população urbana atendida por esgoto sanitário
geom_bar(aes(y = Pop_urbana_atendida_esgotamento_sanitario_pct, fill = "Urbana",
text = paste0(round(Pop_urbana_atendida_esgotamento_sanitario_pct, 2), "%")),
stat = "identity", position = "dodge") +
labs(
title = "População Atendida por Esgoto Sanitário",
x = "Ano",
y = "Porcentagem (%)",
fill = "Tipo de População") +
theme_minimal() +
theme(
legend.position = "top",
plot.title = element_text(size = 16, face = "bold"),
axis.title = element_text(size = 12),
axis.text = element_text(size = 10))## Warning in geom_bar(aes(y = Pop_total_atendida_esgotamento_sanitario_pct, :
## Ignoring unknown aesthetics: text
## Warning in geom_bar(aes(y = Pop_urbana_atendida_esgotamento_sanitario_pct, :
## Ignoring unknown aesthetics: text
# Tornar o gráfico interativo
grafico_interativo <- ggplotly(grafico_barras, tooltip = "text")
# Exibir o gráfico interativo
grafico_interativo# Salvar o gráfico como JPG na pasta "resultados"
ggsave(
filename = "resultados/grafico_pop_atendida_esgoto.jpg",
plot = grafico_barras,
width = 10,
height = 6,
units = "in",
dpi = 300)##6.2(b)
Indicador 6.2(b): Proporção da População com Acesso a Instalações de Lavagem de Mãos
Embora o SNIS não forneça uma variável direta sobre o acesso a instalações de lavagem de mãos com água e sabão, é possível inferir esse acesso a partir dos dados sobre cobertura de água e esgoto. O acesso a esgoto tratado pode ser um indicativo indireto de que as instalações de lavagem de mãos também estão disponíveis, já que, em geral, municípios com infraestrutura de saneamento também possuem sistemas de água e higiene adequados.
A variável mais diretamente relacionada para a meta 6.2(b) seria:
G06B: População urbana residente do município com esgotamento sanitário.
Embora a análise direta de instalações de lavagem de mãos exija dados complementares ou mais específicos, o acesso ao esgoto tratado pode servir como um indicador aproximado.
Descrição das Variáveis:
O volume de esgoto coletado (ES005) refere-se à quantidade de esgoto recolhida no sistema de saneamento, enquanto o volume de esgoto tratado (ES006) é o que passa por algum processo de tratamento antes de ser lançado no meio ambiente.
Unidades de Medida: Especifique as unidades, geralmente metros cúbicos (m³) ou litros.
Cálculo da Razão de Tratamento: Calcule a proporção do volume tratado em relação ao coletado
(ES006/ES005)×100% para cada período e/ou região, o que evidencia a eficiência do sistema de tratamento.
## Warning: Removed 1 row containing missing values or values outside the scale range
## (`geom_line()`).
## Warning: Removed 20 rows containing missing values or values outside the scale range
## (`geom_label()`).
## Warning in geom2trace.default(dots[[1L]][[1L]], dots[[2L]][[1L]], dots[[3L]][[1L]]): geom_GeomLabel() has yet to be implemented in plotly.
## If you'd like to see this geom implemented,
## Please open an issue with your example code at
## https://github.com/ropensci/plotly/issues
## Warning: Removed 1 row containing missing values or values outside the scale range
## (`geom_line()`).
## Warning: Removed 20 rows containing missing values or values outside the scale range
## (`geom_label()`).
## Warning in geom2trace.default(dots[[1L]][[1L]], dots[[2L]][[1L]], dots[[3L]][[1L]]): geom_GeomLabel() has yet to be implemented in plotly.
## If you'd like to see this geom implemented,
## Please open an issue with your example code at
## https://github.com/ropensci/plotly/issues
## Warning: Removed 1 row containing missing values or values outside the scale range
## (`geom_line()`).
## Warning: Removed 20 rows containing missing values or values outside the scale range
## (`geom_label()`).
## Warning in geom2trace.default(dots[[1L]][[1L]], dots[[2L]][[1L]], dots[[3L]][[1L]]): geom_GeomLabel() has yet to be implemented in plotly.
## If you'd like to see this geom implemented,
## Please open an issue with your example code at
## https://github.com/ropensci/plotly/issues
dev01(san_roo, san_roo$Indice_tratamento_esgoto_percentual, 'agregar','Índice Tratamento de Esgoto')## Warning: Removed 1 row containing missing values or values outside the scale range
## (`geom_line()`).
## Warning: Removed 20 rows containing missing values or values outside the scale range
## (`geom_label()`).
## Warning in geom2trace.default(dots[[1L]][[1L]], dots[[2L]][[1L]], dots[[3L]][[1L]]): geom_GeomLabel() has yet to be implemented in plotly.
## If you'd like to see this geom implemented,
## Please open an issue with your example code at
## https://github.com/ropensci/plotly/issues